package com.nlgc365.designpattern.Chapter04_Pattern.Behavior.P02_Template.Callback;

/**
 * 作用: 模板模式的一个问题
 * 问题: 如果一种业务场景下, 只需要用到模板1, 这个时候也同样需要将所有的钩子函数全部实现, 有什么办法不这样做?
 */
public abstract class TemplatePatternSomeCase {
    // 模板1
    public final void templateMethod1() {
        // ...
        method1();
        // ...
        method2();
        // ...
    }

    // 模板2
    public final void templateMethod2() {
        // ...
        method3();
        // ...
        method4();
        // ...
    }

    // 钩子函数
    protected abstract void method1();

    protected abstract void method2();

    protected abstract void method3();

    protected abstract void method4();
}
